﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Administracao_Cadastros_acCadGrupoEmail : System.Web.UI.Page
{
    protected int id = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["id"] != null)
            id = Int32.Parse(Request.QueryString["id"].ToString());

        if (!IsPostBack)
        {
            CarregaComboStatus(rcbStatus);
            CarregaOrganizacao(rcbOrgan);
            Session.Remove("PessoaEmail");
            hdId.Value = "0";

            if (id != 0)
            {
                CarregaGrupoEmail();    
            }
        }

        CarregarEmail();
    }

    private void CarregaGrupoEmail()
    {
        GrupoEmail grupoEmail = new GrupoEmail(id);

        txtNomeGrupo.Text = grupoEmail.Descricao;
        rcbOrgan.SelectedValue = grupoEmail.Organizacao.IdOrganizacao.ToString();
        rcbStatus.SelectedValue = grupoEmail.Status.IdStatus.ToString();
        hdId.Value = grupoEmail.IdGrupoEmail.ToString();
        rcbOrgan.Enabled = false;

    }

    #region Eventos
    protected void btnGravar_Click(object sender, EventArgs e)
    {
        GravaGrupoEmail();
    }
    protected void btnLimpar_Click(object sender, EventArgs e)
    {

    }
    protected void RadGrid1_DeleteCommand(object source, GridCommandEventArgs e)
    {
        int idPessoaEmail = 0;
        idPessoaEmail = int.Parse((e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdPessoaEmail"].ToString());
        RemoveEmail(idPessoaEmail);
        CarregarEmail();
    }
    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        RadGrid1.MasterTableView.SortExpressions.Clear();
        RadGrid1.MasterTableView.GroupByExpressions.Clear();
        RadGrid1.MasterTableView.CurrentPageIndex = RadGrid1.MasterTableView.PageCount - 1;
        RadGrid1.Rebind();
    }
    #endregion

    #region Metodos
    protected void CarregarEmail()
    {
        List<PessoaEmail> listEmail = null;

        if (Session["PessoaEmail"] != null)
        {
            listEmail = (List<PessoaEmail>)Session["PessoaEmail"];
        }
        else
        {
            if (id != 0)
            {
                GrupoEmail grupoEmail = new GrupoEmail(id, true);
                Session.Add("PessoaEmail", grupoEmail.PessoaEmail);
                listEmail = grupoEmail.PessoaEmail;
            }
            else
            {
                listEmail = new List<PessoaEmail>();
            }
        }

        RadGrid1.DataSource = listEmail;
        RadGrid1.DataBind();
    }
    protected void CarregaComboStatus(RadComboBox combo)
    {
        Status status = new Status();
        List<Status> listStatus = status.SelectAll();

        combo.DataTextField = "Descricao";
        combo.DataValueField = "IdStatus";
        combo.DataSource = listStatus;
        combo.DataBind();
    }
    protected void CarregaOrganizacao(RadComboBox combo)
    {
        try
        {
            Organizacao organizacao = new Organizacao();
            List<Organizacao> listOrgan = organizacao.SelectPatrocinadorPrestador();

            combo.DataTextField = "NomeFantasia";
            combo.DataValueField = "IdOrganizacao";
            combo.DataSource = listOrgan;
            combo.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    protected void RemoveEmail(int idPessoaEmail)
    {
        List<PessoaEmail> lisPessoaEmail = null;

        if (Session["PessoaEmail"] != null)
            lisPessoaEmail = (List<PessoaEmail>)Session["PessoaEmail"];

        foreach (PessoaEmail item in lisPessoaEmail)
        {
            if (item.IdPessoaEmail == idPessoaEmail)
            {
                lisPessoaEmail.Remove(item);
                break;
            }
        }
    }
    protected void GravaGrupoEmail()
    {
        lblResultado.Text = "";
        try
        {
            List<PessoaEmail> lisPessoaEmail = null;
            if (Session["PessoaEmail"] != null)
            {
                lisPessoaEmail = (List<PessoaEmail>)Session["PessoaEmail"];

                GrupoEmail grupoEmail = new GrupoEmail();
                grupoEmail.IdGrupoEmail = int.Parse(hdId.Value);
                grupoEmail.Organizacao = new Organizacao(int.Parse(rcbOrgan.SelectedValue));
                grupoEmail.Status = new Status(int.Parse(rcbStatus.SelectedValue));
                grupoEmail.Descricao = txtNomeGrupo.Text;
                grupoEmail.PessoaEmail = lisPessoaEmail;
                grupoEmail.Salvar();

                hdId.Value = grupoEmail.IdGrupoEmail.ToString();
                lblResultado.Text = "Grupo salvo com sucesso!";
            }
            else
            {
                lblResultado.Text = "Adicionar no mínimo um email!";
            }
        }
        catch (Exception ex)
        {
            lblResultado.Text = "Erro:" + ex.Message;
        }
    }
    #endregion
    
}
